package sg.edu.nus.iss.ooad.jass.dao;

import java.util.List;
import sg.edu.nus.iss.ooad.jass.entity.Response;

/**
 *
 * Interface class for Response Data Access Object.
 *
 * @author Isak Rabin (HT082193M)
 * @version 1.0
 * @since 1.0
 *
 * Development Environment : Netbeans IDE v6.7
 * Name of the File        : IResponseDAO.java
 * Creation / Modification History
 *         Isak Rabin        20-Sep-2009        Created
 *
 */
public interface IResponseDAO {

        /**
         * Create new response entity and store it to the persistent data.
         * @param response The response entity.
         * @return True if new response successfully created.
         */
        public boolean createResponse(Response response);

        /**
         * Retrieve response entity from persistent data.
         * @param ID The ID of Response.
         * @return Response object or null if Response cannot be found.
         */
        public Response retrieveResponse(String ID);

        /**
         * Update existing response.
         * @param response The response entity.
         * @return True if response has successfully updated.
         */
        public boolean updateResponse(Response response);

        /**
         * Mark response as deleted.
         * @param response The response entity.
         * @return True if response has successfully mark as deleted.
         */
        public boolean deleteResponse(Response response);

        /**
         * Retrieve all responses.
         * @return List of response.
         */
        public List<Response> getAllResponse();

        /**
         * Find Response by using JobAdvertisement ID as search criteria
         * @param jobadvertisementID Job Advertisment ID.
         * @return List of JobAdvertisement.
         */
        public List<Response> findResponseByJobAdvertisementID(String jobadvertisementID);

        /**
         * Find Response by using Jobseeker ID as search criteria
         * @param location JobAdvertisement Location.
         * @return List of JobAdvertisement.
         */
        public List<Response> findResponseByJobseekerID(String jobseekerID);
}
